/* app_matrix_add_example.c */

#include "app.h"
#include "app_matrix_data.h"


/*******************************************************************************
 * Definitions
 ******************************************************************************/

/*******************************************************************************
 * Variables
 ******************************************************************************/

/*******************************************************************************
 * Prototypes
 ******************************************************************************/

/*******************************************************************************
 * Code
 ******************************************************************************/
/* 使用CMSIS-DSP计算向量点积, 乘加
 */
void app_arm_vector_dot_prod_f32_example(void)
{
    float32_t result;

    PRINTF("%s()\r\n", __func__);

    /* 开始计算. */
    TimerCount_Start(); /* 开始计时. */
    arm_dot_prod_f32( arm_matrix_input_M1_f32.pData,
                      arm_matrix_input_M2_f32.pData,
                      MATRIX_INPUT_M1_ROWS * MATRIX_INPUT_M1_COLS,
                      &result  );
    TimerCount_Stop(tick_counter_val); /* 结束计时. */

    /* 打印计算结果. */
    PRINTF("%9f\r\n", result);
    PRINTF("done with %d us.\r\n\r\n", tick_counter_val/96u); /* 打印计算时间. */
}

void app_pq_vector_dot_prod_f32_example(void)
{
    float32_t result;

    PRINTF("%s()\r\n", __func__);

    /* 使用PowerQuad计算. */
    PQ_SetFormat(POWERQUAD, kPQ_CP_MTX, kPQ_Float);
    TimerCount_Start(); /* 开始计时. */
    PQ_VectorDotProduct(POWERQUAD,
        MATRIX_INPUT_M1_ROWS * MATRIX_INPUT_M1_COLS, /* 注意, 这里的length可以不用特殊编码了. */
        (void *)arm_matrix_input_M1_f32.pData,
        (void *)arm_matrix_input_M2_f32.pData,
        (void *)(&result) );
    PQ_WaitDone(POWERQUAD);
    TimerCount_Stop(tick_counter_val); /* 结束计时. */

    /* 打印计算结果. */
    PRINTF("%9f\r\n", result);
    PRINTF("done with %d us.\r\n\r\n", tick_counter_val/96u); /* 打印计算时间. */
}

/* EOF. */

